home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / scripts / kconfig / qconf.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  7.8 KB  |  335 lines

  1. /*
  2.  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
  3.  * Released under the terms of the GNU GPL v2.0.
  4.  */
  5.  
  6. #include <qlistview.h>
  7. #if QT_VERSION >= 300
  8. #include <qsettings.h>
  9. #else
  10. class QSettings {
  11. public:
  12.     void beginGroup(const QString& group) { }
  13.     void endGroup(void) { }
  14.     bool readBoolEntry(const QString& key, bool def = FALSE, bool* ok = 0) const
  15.     { if (ok) *ok = FALSE; return def; }
  16.     int readNumEntry(const QString& key, int def = 0, bool* ok = 0) const
  17.     { if (ok) *ok = FALSE; return def; }
  18.     QString readEntry(const QString& key, const QString& def = QString::null, bool* ok = 0) const
  19.     { if (ok) *ok = FALSE; return def; }
  20.     QStringList readListEntry(const QString& key, bool* ok = 0) const
  21.     { if (ok) *ok = FALSE; return QStringList(); }
  22.     template <class t>
  23.     bool writeEntry(const QString& key, t value)
  24.     { return TRUE; }
  25. };
  26. #endif
  27.  
  28. class ConfigView;
  29. class ConfigList;
  30. class ConfigItem;
  31. class ConfigLineEdit;
  32. class ConfigMainWindow;
  33.  
  34.  
  35. class ConfigSettings : public QSettings {
  36. public:
  37.     QValueList<int> readSizes(const QString& key, bool *ok);
  38.     bool writeSizes(const QString& key, const QValueList<int>& value);
  39. };
  40.  
  41. enum colIdx {
  42.     promptColIdx, nameColIdx, noColIdx, modColIdx, yesColIdx, dataColIdx, colNr
  43. };
  44. enum listMode {
  45.     singleMode, menuMode, symbolMode, fullMode, listMode
  46. };
  47.  
  48. class ConfigList : public QListView {
  49.     Q_OBJECT
  50.     typedef class QListView Parent;
  51. public:
  52.     ConfigList(ConfigView* p, const char *name = 0);
  53.     void reinit(void);
  54.     ConfigView* parent(void) const
  55.     {
  56.         return (ConfigView*)Parent::parent();
  57.     }
  58.     ConfigItem* findConfigItem(struct menu *);
  59.  
  60. protected:
  61.     void keyPressEvent(QKeyEvent *e);
  62.     void contentsMousePressEvent(QMouseEvent *e);
  63.     void contentsMouseReleaseEvent(QMouseEvent *e);
  64.     void contentsMouseMoveEvent(QMouseEvent *e);
  65.     void contentsMouseDoubleClickEvent(QMouseEvent *e);
  66.     void focusInEvent(QFocusEvent *e);
  67.     void contextMenuEvent(QContextMenuEvent *e);
  68.  
  69. public slots:
  70.     void setRootMenu(struct menu *menu);
  71.  
  72.     void updateList(ConfigItem *item);
  73.     void setValue(ConfigItem* item, tristate val);
  74.     void changeValue(ConfigItem* item);
  75.     void updateSelection(void);
  76.     void saveSettings(void);
  77. signals:
  78.     void menuChanged(struct menu *menu);
  79.     void menuSelected(struct menu *menu);
  80.     void parentSelected(void);
  81.     void gotFocus(struct menu *);
  82.  
  83. public:
  84.     void updateListAll(void)
  85.     {
  86.         updateAll = true;
  87.         updateList(NULL);
  88.         updateAll = false;
  89.     }
  90.     ConfigList* listView()
  91.     {
  92.         return this;
  93.     }
  94.     ConfigItem* firstChild() const
  95.     {
  96.         return (ConfigItem *)Parent::firstChild();
  97.     }
  98.     int mapIdx(colIdx idx)
  99.     {
  100.         return colMap[idx];
  101.     }
  102.     void addColumn(colIdx idx, const QString& label)
  103.     {
  104.         colMap[idx] = Parent::addColumn(label);
  105.         colRevMap[colMap[idx]] = idx;
  106.     }
  107.     void removeColumn(colIdx idx)
  108.     {
  109.         int col = colMap[idx];
  110.         if (col >= 0) {
  111.             Parent::removeColumn(col);
  112.             colRevMap[col] = colMap[idx] = -1;
  113.         }
  114.     }
  115.     void setAllOpen(bool open);
  116.     void setParentMenu(void);
  117.  
  118.     template <class P>
  119.     void updateMenuList(P*, struct menu*);
  120.  
  121.     bool updateAll;
  122.  
  123.     QPixmap symbolYesPix, symbolModPix, symbolNoPix;
  124.     QPixmap choiceYesPix, choiceNoPix;
  125.     QPixmap menuPix, menuInvPix, menuBackPix, voidPix;
  126.  
  127.     bool showAll, showName, showRange, showData;
  128.     enum listMode mode;
  129.     struct menu *rootEntry;
  130.     QColorGroup disabledColorGroup;
  131.     QColorGroup inactivedColorGroup;
  132.     QPopupMenu* headerPopup;
  133.  
  134. private:
  135.     int colMap[colNr];
  136.     int colRevMap[colNr];
  137. };
  138.  
  139. class ConfigItem : public QListViewItem {
  140.     typedef class QListViewItem Parent;
  141. public:
  142.     ConfigItem(QListView *parent, ConfigItem *after, struct menu *m, bool v)
  143.     : Parent(parent, after), menu(m), visible(v), goParent(false)
  144.     {
  145.         init();
  146.     }
  147.     ConfigItem(ConfigItem *parent, ConfigItem *after, struct menu *m, bool v)
  148.     : Parent(parent, after), menu(m), visible(v), goParent(false)
  149.     {
  150.         init();
  151.     }
  152.     ConfigItem(QListView *parent, ConfigItem *after, bool v)
  153.     : Parent(parent, after), menu(0), visible(v), goParent(true)
  154.     {
  155.         init();
  156.     }
  157.     ~ConfigItem(void);
  158.     void init(void);
  159. #if QT_VERSION >= 300
  160.     void okRename(int col);
  161. #endif
  162.     void updateMenu(void);
  163.     void testUpdateMenu(bool v);
  164.     ConfigList* listView() const
  165.     {
  166.         return (ConfigList*)Parent::listView();
  167.     }
  168.     ConfigItem* firstChild() const
  169.     {
  170.         return (ConfigItem *)Parent::firstChild();
  171.     }
  172.     ConfigItem* nextSibling() const
  173.     {
  174.         return (ConfigItem *)Parent::nextSibling();
  175.     }
  176.     void setText(colIdx idx, const QString& text)
  177.     {
  178.         Parent::setText(listView()->mapIdx(idx), text);
  179.     }
  180.     QString text(colIdx idx) const
  181.     {
  182.         return Parent::text(listView()->mapIdx(idx));
  183.     }
  184.     void setPixmap(colIdx idx, const QPixmap& pm)
  185.     {
  186.         Parent::setPixmap(listView()->mapIdx(idx), pm);
  187.     }
  188.     const QPixmap* pixmap(colIdx idx) const
  189.     {
  190.         return Parent::pixmap(listView()->mapIdx(idx));
  191.     }
  192.     void paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align);
  193.  
  194.     ConfigItem* nextItem;
  195.     struct menu *menu;
  196.     bool visible;
  197.     bool goParent;
  198. };
  199.  
  200. class ConfigLineEdit : public QLineEdit {
  201.     Q_OBJECT
  202.     typedef class QLineEdit Parent;
  203. public:
  204.     ConfigLineEdit(ConfigView* parent);
  205.     ConfigView* parent(void) const
  206.     {
  207.         return (ConfigView*)Parent::parent();
  208.     }
  209.     void show(ConfigItem *i);
  210.     void keyPressEvent(QKeyEvent *e);
  211.  
  212. public:
  213.     ConfigItem *item;
  214. };
  215.  
  216. class ConfigView : public QVBox {
  217.     Q_OBJECT
  218.     typedef class QVBox Parent;
  219. public:
  220.     ConfigView(QWidget* parent, const char *name = 0);
  221.     ~ConfigView(void);
  222.     static void updateList(ConfigItem* item);
  223.     static void updateListAll(void);
  224.  
  225.     bool showAll(void) const { return list->showAll; }
  226.     bool showName(void) const { return list->showName; }
  227.     bool showRange(void) const { return list->showRange; }
  228.     bool showData(void) const { return list->showData; }
  229. public slots:
  230.     void setShowAll(bool);
  231.     void setShowName(bool);
  232.     void setShowRange(bool);
  233.     void setShowData(bool);
  234. signals:
  235.     void showAllChanged(bool);
  236.     void showNameChanged(bool);
  237.     void showRangeChanged(bool);
  238.     void showDataChanged(bool);
  239. public:
  240.     ConfigList* list;
  241.     ConfigLineEdit* lineEdit;
  242.  
  243.     static ConfigView* viewList;
  244.     ConfigView* nextView;
  245. };
  246.  
  247. class ConfigInfoView : public QTextBrowser {
  248.     Q_OBJECT
  249.     typedef class QTextBrowser Parent;
  250. public:
  251.     ConfigInfoView(QWidget* parent, const char *name = 0);
  252.     bool showDebug(void) const { return _showDebug; }
  253.  
  254. public slots:
  255.     void setInfo(struct menu *menu);
  256.     void saveSettings(void);
  257.     void setSource(const QString& name);
  258.     void setShowDebug(bool);
  259.  
  260. signals:
  261.     void showDebugChanged(bool);
  262.     void menuSelected(struct menu *);
  263.  
  264. protected:
  265.     void symbolInfo(void);
  266.     void menuInfo(void);
  267.     QString debug_info(struct symbol *sym);
  268.     static QString print_filter(const QString &str);
  269.     static void expr_print_help(void *data, struct symbol *sym, const char *str);
  270.     QPopupMenu* createPopupMenu(const QPoint& pos);
  271.     void contentsContextMenuEvent(QContextMenuEvent *e);
  272.  
  273.     struct symbol *sym;
  274.     struct menu *menu;
  275.     bool _showDebug;
  276. };
  277.  
  278. class ConfigSearchWindow : public QDialog {
  279.     Q_OBJECT
  280.     typedef class QDialog Parent;
  281. public:
  282.     ConfigSearchWindow(ConfigMainWindow* parent, const char *name = 0);
  283.  
  284. public slots:
  285.     void saveSettings(void);
  286.     void search(void);
  287.  
  288. protected:
  289.     QLineEdit* editField;
  290.     QPushButton* searchButton;
  291.     QSplitter* split;
  292.     ConfigView* list;
  293.     ConfigInfoView* info;
  294.  
  295.     struct symbol **result;
  296. };
  297.  
  298. class ConfigMainWindow : public QMainWindow {
  299.     Q_OBJECT
  300.  
  301.     static QAction *saveAction;
  302.     static void conf_changed(void);
  303. public:
  304.     ConfigMainWindow(void);
  305. public slots:
  306.     void changeMenu(struct menu *);
  307.     void setMenuLink(struct menu *);
  308.     void listFocusChanged(void);
  309.     void goBack(void);
  310.     void loadConfig(void);
  311.     void saveConfig(void);
  312.     void saveConfigAs(void);
  313.     void searchConfig(void);
  314.     void showSingleView(void);
  315.     void showSplitView(void);
  316.     void showFullView(void);
  317.     void showIntro(void);
  318.     void showAbout(void);
  319.     void saveSettings(void);
  320.  
  321. protected:
  322.     void closeEvent(QCloseEvent *e);
  323.  
  324.     ConfigSearchWindow *searchWindow;
  325.     ConfigView *menuView;
  326.     ConfigList *menuList;
  327.     ConfigView *configView;
  328.     ConfigList *configList;
  329.     ConfigInfoView *helpText;
  330.     QToolBar *toolBar;
  331.     QAction *backAction;
  332.     QSplitter* split1;
  333.     QSplitter* split2;
  334. };
  335.